# 数据库工具
import pymysql

import conftest
from common.file_util import read_yml, object_path

db_info = read_yml(object_path()+'/config/BasicProjectInfo.yml')['db'] # 加载数据库连接信息

class DBUtil:

    def __init__(self):
        # 获取当前被测环境
        self.env = conftest.env

        # 建立数据库连接
        self.connect = pymysql.connect(**db_info[self.env])

        # 创建一个游标对象
        self.cursor = self.connect.cursor()

    def query(self,sql,*args):
        """
        DQL方法
        :param sql: sql语句
        :param args: sql语句中的参数
        :return: 列表字典格式的结果
        """
        self.cursor.execute(sql,*args)
        result = self.cursor.fetchall()
        result_list = []
        for row in result:
            result_dict = {}
            for i, j in enumerate(self.cursor.description):
                result_dict[j[0]] = row[i]
            result_list.append(result_dict)
        return result_list


    def excute(self,sql,*args):
        """
        DDL的实现方法
        :param sql: sql语句
        :param args: sql语句中的变量
        :return: None
        """
        self.cursor.execute(sql,*args)
        self.connect.commit()

    def close(self):
        """
        关闭数据库连接
        :return: None
        """
        self.cursor.close()
        self.connect.close()